#include "dialogtransfert.h"
#include "ui_dialogtransfert.h"



DialogTransfert::DialogTransfert(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::DialogTransfert)
{
    ui->setupUi(this);

    QString chemin = QFileDialog::getOpenFileName(this,"Fichier à importer",QDir::currentPath(),"CSV (*.csv)");

    QFile fichier(chemin);
    if(!fichier.open(QIODevice::ReadOnly)){
        QMessageBox::critical(this,"Ouverture","Impossible d'ouvrir ce fichier, vérifiez sa validité");
        this->reject();
    }

    QTextStream in(&fichier);

    QTableWidgetItem *it0 = new QTableWidgetItem("Id");
    QTableWidgetItem *it1 = new QTableWidgetItem("Depuis");
    QTableWidgetItem *it2 = new QTableWidgetItem("Id");
    QTableWidgetItem *it3 = new QTableWidgetItem("Vers");
    QTableWidgetItem *it4 = new QTableWidgetItem("Montant");
    QTableWidgetItem *it5 = new QTableWidgetItem("Création");
    ui->tableWidget->setItem(0,0,it0);
    ui->tableWidget->setItem(0,1,it1);
    ui->tableWidget->setItem(0,2,it2);
    ui->tableWidget->setItem(0,3,it3);
    ui->tableWidget->setItem(0,4,it4);
    ui->tableWidget->setItem(0,5,it5);


    while(!in.atEnd()){

        int i = ui->tableWidget->rowCount();
        ui->tableWidget->setRowCount(i+1);

        QStringList ligne = in.readLine().split(";");
        Pg depuis(ligne[0].toInt(),ligne[1]);
        Pg vers(ligne[3].toInt(),ligne[4]);

        bool creer = false;
        if(vers.getId()<=0){
            vers = Pg::creer(ligne[3].toInt(),ligne[4],ligne[2]);
            creer = true;
        }

        if(vers.getId()>0){
            if(depuis.getId()>0){
                QTableWidgetItem *item0 = new QTableWidgetItem(QString::number(depuis.getId()));
                QTableWidgetItem *item1 = new QTableWidgetItem(depuis.getBucque()+" "+QString::number(depuis.getFams())+" "+depuis.getProms());
                QTableWidgetItem *item2 = new QTableWidgetItem(QString::number(vers.getId()));
                QTableWidgetItem *item3 = new QTableWidgetItem(vers.getBucque()+" "+QString::number(vers.getFams())+" "+vers.getProms());
                QTableWidgetItem *item4 = new QTableWidgetItem(ligne[5]);
                QTableWidgetItem *item5 = new QTableWidgetItem(creer?"Oui":"Non");
                ui->tableWidget->setItem(i,0,item0);
                ui->tableWidget->setItem(i,1,item1);
                ui->tableWidget->setItem(i,2,item2);
                ui->tableWidget->setItem(i,3,item3);
                ui->tableWidget->setItem(i,4,item4);
                ui->tableWidget->setItem(i,5,item5);
            }else{
                QMessageBox::warning(this,"Erreur entrée",ligne[0] +" de la prom'ss "+ ligne[1]+" n'est pas présent dans la base." );
            }
        }else{
            QMessageBox::warning(this,"Erreur création",ligne[3] +" de la prom'ss "+ ligne[4]+" n'a pas pu être ajouté à la base." );
        }


    }



}

DialogTransfert::~DialogTransfert()
{
    delete ui;
}

void DialogTransfert::on_buttonBox_accepted(){


    QSqlDatabase db = QSqlDatabase::database();
    QSqlQuery q;
    q.prepare("UPDATE Pg SET Solde = Solde + :montant WHERE Id = :id");

    for(int i = 1; i < ui->tableWidget->rowCount();i++){

        int idDepuis = ui->tableWidget->model()->index(i,0).data().toInt();
        int idVers = ui->tableWidget->model()->index(i,2).data().toInt();
        if(idDepuis>0){
            if(idVers>0){
                db.transaction();
                double montant = ui->tableWidget->model()->index(i,4).data().toDouble();
                q.bindValue(":id",idDepuis);
                q.bindValue(":montant",-montant);
                q.exec();
                q.bindValue(":id",idVers);
                q.bindValue(":montant",montant);
                q.exec();
                db.commit();
            }else{
                QMessageBox::warning(this,"Erreur création",ui->tableWidget->model()->index(i,1).data().toString() +" n'a pas pu être ajouté à la base." );
                }

        }else{
            QMessageBox::warning(this,"Erreur entrée", ui->tableWidget->model()->index(i,3).data().toString() + " n'est pas présent dans la base." );
            }


    }

}
